home *** CD-ROM | disk | FTP | other *** search
/ Network PC / Network PC.iso / installations / amiga emulator / _setup.1 / ChangeLog next >
Text File  |  1997-06-12  |  95KB  |  1,527 lines

  1. 970608 Fix ncurses.c so that it links. Fix configure so that it can be enabled
  2.        Get rid of spixstate by implementing a new sprite drawing method.
  3. 970607 do_copper_cheat(): New function, Implement inaccurate, line-based
  4.        copper as an option (-C). calc_copcomp_true(): Fix possible hr 4 plane
  5.        bug (split the wait into several pieces in this mode).
  6.        Allow 0 bytes for fast and bogomem (to override .uaerc)
  7. 970606 Fix some bugs in transdisk, and make it compile with SAS C (Joanne Dow)
  8.        Stupid compilation fixes: Get rid of "==" in shell scripts, check that
  9.        B300 and friends are defined in serial.c before using them.
  10.        Implement blitter prefetch. Fix silly type in main.c that prevented
  11.        immediate blits.
  12.        init_ham_decoding(): new function, handles case where the first few
  13.        pixels of a HAM display are outside the window.
  14. 970605 disk.c: Get rid of need_read. Save cylinder/track number for the data
  15.        in the MFM buffer for each drive. Force rereads on disk insert and
  16.        write operations. In drive_fill_bigbuf(), do nothing if saved data
  17.        matches current. Fix disk change logic: give the program time to read
  18.        the change bit a couple of times before inserting a new disk.
  19.        custom.c: Fix really subtle bug: when deciding a line as border,
  20.        plfstrt/plflinelen were not set up properly, which could confuse
  21.        post_decide_line(), and eventually there would be lines decided as
  22.        playfield with plfstrt == 0, plflinelen == -32 ==> Bang. A related
  23.        bug was that setting DDFSTRT to 0 would result in both plfstrt and
  24.        plfstop having value 0.
  25.        gfxutil.c: Fix bug that could cause color values to go out of bounds.
  26.        xwin.c, svga.c: When dithering, color values were not doubled properly.
  27. 970604 filesys.c: when deleting an a_ino, remove it from hash table (Mathias
  28.        Ortmann). In do_find(), if creating a file failed and we didn't have
  29.        an a_ino before, call delete_aino on the one we created.
  30.        More configure changes: Add $X_PRE_LIBS and $X_EXTRA_LIBS in some
  31.        places. See if MIT-SHM support for X will compile and link. Always
  32.        compile it in if it will. Turn DONT_WANT_SHM and LOW_BANDWIDTH into
  33.        run-time options (-T, -L). Use single line buffer when dithering and
  34.        in low-bandwidth mode (but in all cases there's a full buffer for the
  35.        X image).
  36.        memory.c: Don't map in custom regs at 0x200000 if chipmem_size > 2MB.
  37.        Split up init_sound(): new function setup_sound(). Make "-B" accept
  38.        minimum and maximum values as in Gustavo's latest patch. Add code to
  39.        tui.c to support changing buffer size, number of bits and frequency.
  40. 970603 If using compiler, define NO_EXCEPTION_3 and NO_PREFETCH_BUFFER.
  41.        (bugreport by Raphael Poss).
  42.        GGI support from Christian Schmitt/Stefan Reinauer. More serial patches
  43.        from Stefan. 3 button joystick patch from Mathias.
  44.        Add linemem field to gfxvidinfo, for systems that don't want to keep
  45.        a buffer of the full screen. Adjust custom.c to use it instead of
  46.        bufmem if it's not NULL (mostly by Mathias). svga.c, xwin.c: Use single
  47.        line buffer in some cases. xwin.c: If USE_DGA_EXTENSION, undef
  48.        LOW_BANDWIDTH. Move test of DONT_WANT_SHM after inclusion of config.h
  49.        Make configure.in a bit more structured.
  50.        Move colormodes array to main.c.
  51. 970602 gfxlib.c: Start implementing layers workalike.
  52.        md-i386-gcc/support.c: Don't mix sleep and alarm. (Petter Schau)
  53. 970601 Remove may_run_compiled. Print error and abort if m68k_go is called
  54.        twice.
  55.        Fix yesterdays bugfix in svga.c.
  56.        Change FRAME_RATE_HACK so it tries to average the times a bit.
  57.        Re-implement a call_m68k function in autoconf.c. The new version
  58.        works by doing some heavy setjmp/longjmp magic and switching stacks.
  59.        With this, it's even possible to call things that Wait(), so use
  60.        the new functionality in gfxlib.c to call LockLayer() in WritePixel().
  61. 970531 Turn some inline functions in memory.h into macros. Get rid of
  62.        get_along and get_aword. Implement CIA A OVL bit.
  63.        main.c: Add missing close_sound() call.
  64.        Remove INTEL_FLAG_OPT, use X86_ASSEMBLY for everything.
  65.        tui.c/svgancui.c: Implement scrollable menus. Add code to select
  66.        video mode from a given list. Add "graphics_setup" call to graphics
  67.        specific files. Use it in svga.c to build a video mode menu.
  68.        Fix bug in svga.c that would crash non-linear modes.
  69.        disk.c needs to include gensound.h and sounddep/sound.h.
  70.        Fix bug in fuzzy_memset. In pfield_init_linetoscr, always adjust ddf
  71.        values if lores hack is being used.
  72. 970530 Apply some patches by Samuel Devulder.
  73. 970529 filesys.c: In "Houston, we have a problem" case, do not only delete
  74.        the oldest ExKey, but also use it instead of random memory for the
  75.        new one. Attempt to reduce the number of lost exkeys by allocating
  76.        them in action_examine_next instead of action_examine_object.
  77.        Initialize the "uniq" field of unit->rootnode.
  78.        Attempt to speed up sprite drawing loop.
  79.        Implement sprite<->sprite collisions.
  80.        Get rid of -Wtraditional.
  81. 970524 New config option NO_PREFETCH_BUFFER. Emulate 16 byte prefetch if
  82.        unset.
  83.        For exception 3, the stack frame seems to be:
  84.        (saved SR).w, (faulting address).l, (faulting instruction).w, 0.w,
  85.        (pc at fault time).l. Make everything that could generate this fault
  86.        handle it properly. That got Cybernoid II working!
  87. 970523 Makefile.in: Make sure $(DEBUGFLAGS) is used for CPU emulation files.
  88.        memory.c: Don't map chipmem at 0x200000, use custom chip bank for now.
  89. 970507 configure.in: Mutate ac_cv_c_inline=no to ac_cv_c_inline=
  90.        Check for tcgetattr, <sys/termios.h>, cfmakeraw, <sys/ioctl.h>
  91.        Check for sem_init in -lposix4 (Marc Zimmermann)
  92.        serial.c, cia.c, cia.h, serial.c: changes (Stefan Reinauer)
  93.        Make disk gap 360 (Michael Krause)
  94. 970404 In configure, check for features.h before including it in test program.
  95. 970401 New option -4. Bugreport by Mirko Viviani.
  96. 970324 Petter Schau says the exception frame for Bus Error and Address Error
  97.        is 14 bytes, not 6, on the 68000. Change Exception() accordingly.
  98.        It's *** OUCH *** day! Make hardfile beginio return the correct value. 
  99.        Also load execbase before calling ReplyMsg().
  100.        It's *** OUCH *** day again! The filesystem asm code was an odd number
  101.        of bytes, leaving the hardfile code unaligned.
  102. 970318 custom.c: Rename spron to sprst, and use new variable spron to indicate
  103.        for which sprites the sprite pointer registers have been written. Don't
  104.        do sprite DMA if spron==0. (The problem was that some programs write
  105.        SPRxCTL and then SPRxPT, which used to set the sprite state to
  106.        SPR_restart, but it must be SPR_waiting_start.)
  107.        Turn a few m68k_reset()s into uae_reset()s.
  108.        New variable nr_joysticks. Delete joystickpresent. New arg "nr" for
  109.        getjoystate() and read_joystick().
  110.        New extra keycode AK_RCTRL. Handle multiple joysticks & different key
  111.        replacements in keybuf.c/custom.c. Make tui.c handle all the settings.
  112. 970310 od-linux/joystick.c now compiles again without the joystick header.
  113.        Fix some problems in configure; also check whether [n]curses.h defines
  114.        attr_t. Keep count of warnings and errors during configuration and
  115.        print a hopefully helpful message at the end.
  116.        disk.c sanitized by Mathias Ortmann.
  117.        Change the replacement getopt around a bit.
  118.        execlib.c, timerdev.c: Files removed. This will never be compatible
  119.        enough. Also remove related code (several SPCFLAGs, etc.)
  120.        Make main.c a bit nicer by introducing additional defines for the t-*
  121.        files. Also canonicalize the .uaerc file on all systems, eliminating
  122.        lines starting with '#' in the process.
  123.        Remove code in autoconf.c to set up 8MB chip; move it to filesys.asm.
  124.        Try doing the copper end-of-line hack in copper_memory_cycles().
  125.        Disable the copper speedup hack.
  126. 970309 Add a small, dumb hash table to struct _unit to speed up repeated
  127.        aino lookups. Delete aino in action_delete_object(). Move children in
  128.        action_rename_object(). In action_examine_next(), call new function
  129.        lookup_child_aino_for_exnext() which behaves more or less like
  130.        lookup_child_aino(), except it uses new function get_aname() to
  131.        translate filenames.
  132.        More portability fixes. New links set up in configure: sounddep,
  133.        target.h. All machine-dependent and joystick code removed
  134.        from os.c, renamed to audio.c. os.h renamed to audio.h, joystick stuff
  135.        moved to joystick.h. New directory targets/.
  136.        missing.c: New file.
  137. 970308 Rewrite filesystem. Now it keeps one unique "a_inode" structure for
  138.        every object in the filesystem. This contains Amiga name, native
  139.        name, Amiga permissions, lock counts and several links for building
  140.        a tree structure. Keys are now made only for files which need a fd
  141.        and a file position.
  142.        Treat invalid locking modes als shared.
  143.        Comment out the code using readdir_r because that function appears
  144.        to be broken in glibc-2.0.1.
  145.        Clear RES2 in all packets before handling them.
  146.        Give mousehack the same task priority as the input.device.
  147.        Fix (?) some silly bugs in disk.c.
  148. 970307 Include some Acorn port code from Peter Teichmann.
  149.        Yet Another Serial Diff from Stefan.
  150. 970306 filesys.c: Don't just crash if lookup_key() has no success.
  151.        action_find_write() is supposed to create the file if it does not
  152.        exist.
  153. 970305 More DOS patches. Make the Makefile parallel-make safe.
  154.        svgancui.c: Do cyclic search if character is typed in file selector.
  155.        my_alphasort(): New function (work around glibc bug)
  156.        custom.c: Fix error in yesterdays change.
  157.        filesys.h: New file.
  158. 970304 New serial patch from Stefan and Christian.
  159.        Remove the assembler code to generate inputevents. Instead, add a new
  160.        Amiga C program ("mousehack") which does the trick. New function
  161.        mousehack_helper() in custom.c, activated by calltrap 0xF0FF70.
  162.        Mouse default is now always normal_mouse, not follow_mouse.
  163.        Do disk change checks only every 1/2 second. disk.c: Reverse
  164.        nodskchange to dskchange, and make sure there has been a step with the
  165.        drive empty before calling drive_insert() from DISK_check_change() (but
  166.        this _still_ doesn't work. Arrrghh).
  167. 970303 filesys.c: Initialize _all_ of struct _unit in startup_handler().
  168.        Remove message_lock and friends and use new variables cmds_sent,
  169.        cmds_acked and cmds_completed to determine when to send dummy messages.
  170.        Changed examinekey handling so that "dir all" on a large tree doesn't
  171.        crash anymore (it used to reuse the top-level exkeys which were still
  172.        in use after a wraparound). Don't allocate examinekeys if we're
  173.        examining files.
  174.        Check for readdir_r in configure. Use a wrapper my_readdir() around
  175.        either readdir or readdir_r.
  176.        Call filesys_reset() also from filesys_diagentry().
  177.        Get rid of most of uaelib.c. Now there isn't a library, just a calltrap
  178.        at 0xF0FF60. Changed uae_pragmas.h accordingly and recompiled uaectrl.
  179.        Added a bunch of "volatile"s in various places in filesys.c and
  180.        penguin.h.
  181.        Make the filesystem reset-safe in the threaded case (paranoia changes).
  182.        Check disk changes only every 1/10 second in vsync_handler().
  183.        Add assembler code to generate InputEvents once every vblank to
  184.        filesys.asm. (Doesn't work yet.)
  185. 970302 filesys.c: Get rid of DosPacket type, pass pointers into Amiga memory
  186.        instead. Use GET_PCK_* and PUT_PCK_* macros to access fields.
  187.        Start making filesystem code thread safe & multithreaded. Move static
  188.        variables from some functions into struct _unit, likewise the key
  189.        and exkey variables. Add code to filesys.asm to queue commands which
  190.        did not complete and to reply to them later. Do multithreading if
  191.        compiled with SUPPORT_THREADS. See source for details.
  192.        Change hardfile and uaelib code not to call 68k routines. Make emulator
  193.        traps more efficient (no need to save regs, don't need SPCFLAG_EMULTRAP
  194.        anymore).
  195. 970301 Fixed ncurses.c so it works with currprefs.
  196.        filesys_reset(): New function, called from customreset().
  197.        Changed source layout. Break up machdep into machdep, osdep and
  198.        threaddep.
  199.        penguin.h: Now supports arbitrary types in pipes.
  200.        Changed filesys.c so that no 68k code is called from native C code.
  201.          filesys.asm, filesys.sh: New files. filesys.asm contains some
  202.      startup code and the main loop for the filesystem. Several locks
  203.      are allocated by the assembler code for use by the C code.
  204.      DOS_AllocMem(), DOS_FreeMem(), make_dev(), build_parmpacket(),
  205.      filesys_init(): Functions removed.
  206. 970228 ncurses.c: Fix problem in b/w modes.
  207.        finish_drawing_frame(): Don't need to draw lines in multipenguin mode.
  208.        Move all options into new struct uae_prefs. New variables currprefs,
  209.        changed_prefs.
  210.        svgancui.c, tui_filereq(): If user presses a key, start search at
  211.        current position, not at the beginning.
  212.        DISK_check_change(): new function, compares currprefs with
  213.        changed_prefs and handles diskchanges if they differ. Called from
  214.        vsync_handler().
  215.        DISK_validate_filename(): new function, checks whether a file exists.
  216.        Modify svga.c and tui.c so that F11 now brings up a limited UI.
  217. 970227 Reimplement Mathias Ortmann's frame rate hack: New option HAVE_RDTSC
  218.        in config.h. New typedef frame_time_t. New variables vsynctime and
  219.        vsyncmintime. New function machdep_init() in md-*/support.c which
  220.        sets up vsynctime in the md-i386-gcc and md-i386-linux cases. Use
  221.        all of those in events.h, do_cycles() to determine whether to spend
  222.        more time on the CPU emulation.
  223.        Add missing "int i;" to xwin.c, init_colors().
  224.        Unroll some loops in sample_*handler().
  225.        Improve quitting/resetting behaviour: Move quit_program from GUI
  226.        specific files to main.c. New functions uae_reset() and uae_quit(),
  227.        quit_program is now handled in vsync_handler() and m68k_go().
  228.        New variable sample_evtime, used in customreset() and set up in
  229.        init_sound().
  230. 970226 Solaris sound update from Manfred Thole.
  231.        keybuf.c: Decided that it doesn't need locking after all.
  232.        Add a bunch of Gustavo's latest diffs. (I hate CR characters!)
  233.        Move gfxvidinfo from all the target-specific files to custom.c
  234.        More Win32 stuff: New function notice_new_xcolors().
  235. 970225 configure.in: In shell string comparisons, always put spaces around =
  236.        Add warning about standard SVGAlib being incompatible with
  237.        LinuxThreads.
  238.        os.c, SOLARIS_SOUND: Remove reference to obsolete variable smplcnt.
  239.        Two new variables sound8_base and sound16_base.
  240.        sysdeps.h: Split off some stuff into md-amiga/amiga-kludges.h. Also
  241.        make the main types now uae_u32 and variants instead of ULONG, etc.
  242.        Convert some files to use the new types.
  243.        cia.c: use int/long instead of ULONG/UWORD/etc for most static vars.
  244.        xdebug.c: Some cleanup.
  245.        md-i386-linux/penguin.h: Fix bug. Add "chunks" parameter to
  246.        init_comm_pipe. Use it to decide in write routine whether to signal
  247.        the other thread if it's waiting. Add no_buffer parameter to
  248.        write_comm_pipe_int.
  249.        Start adding Mathias Ortmann's Win32 patches.
  250.          md-i386-win32: New directory
  251.      include/sysconfig.h.win32: New file
  252.      custom.c: is_lastline: new variable, set in hsync_handler().
  253.      sysdeps.h: Make it possible for system specific code to say that
  254.        POSIX/ANSI stdio/malloc functions aren't present and are defined
  255.        by a system-specific file instead. In filesys.c, don't reference
  256.        errno if DONT_HAVE_POSIX is defined.
  257.      readcpu.h: Kludge around the fact that Messysoft C apparently doesn't
  258.        handle enums properly.
  259.      newcpu.c/sysdeps.h: Preprocessor magic for 64 bit constants to get
  260.        around a problem with MS C.
  261.      md-*/penguin.h: Add dummy definitions for semaphores.
  262.      keybuf.c: Use semaphores to synchronize access.
  263.      os.c, win32 sound stuff: add memcpy avoidance code.
  264. 970221 X86.S: Don't use .type ifdef USE_UNDERSCORE.
  265.        Move thread support configuration to configure from config.h. Change
  266.        pipe implementation to use POSIX semaphore functions.
  267. 970217 From Samuel Devulder: Fix off-by-one error in LINE_TO_SCR, EHB case.
  268. 970215 customreset(): Initialize current_colors.color_regs to invalid values
  269.        [reported by Samuel Devulder]. config.h: Uncomment ECS_DENISE [reported
  270.        by Mathias Ortmann]. Add ami-win.c and custom.c patch from Samuel
  271.        Devulder.
  272. 970213 disk.c: Set FLOPPY_SPEED to 3
  273.        custom.c: SPRxCTL_1(): if spron was SPR_restart set it to
  274.        SPR_waiting_start. do_sprites(): don't do that.
  275.        SPRxPT{H,L}: Call decide_line().
  276. 970210 custom.c, X86.S: Do LORES_HACK for dual playfield screens. Plug memory
  277.        leak in custom_reset(). Fix pfield_draw_line() not to do so many
  278.        multiplications. Make line_changed a char array. In remember_ctable(),
  279.        remember comparison results also if negative.
  280.        In 8 and 16 bit graphics modes, use the high parts of the color values
  281.        to duplicate the actual values. This saves a lot of code in the
  282.        hdoubling routines. Add a special fill_line in the X86_ASSEMBLY case.
  283.        Check for glibc-2 and libpthread in configure.
  284.        options.h: In fuzzy_memset(), do rounding slightly more conservative.
  285.        Add tons of new keycodes to svga.c
  286.        In record_color_change(), also check if vertically outside DIW.
  287.        New variable hdiwstate, to represent the horizontal DIW state machine
  288.        (thanks Petter!) Handled in reset_decisions(), finish_decisions() and
  289.        decide_diw().
  290. 970209 Change ncurses.c not to do so many multiplications/divisions. Add bold
  291.        character support. Add color support. Make configure recognize
  292.        --without-svgalib and enable ncurses.c in that case.
  293. 970208 X86.S, custom.c: Do LORES_HACK for EHB screens also.
  294.        New function write_log(); convert some fprintf(stderr, ...) calls.
  295. 970207 Argh, Linux/i386/ELF check in configure got broken by latest sh-utils.
  296.        In disk.c, drive_reset(), clear nodskchange flag.
  297. 970206 Sprite fix from Mathias Ortmann: _really_ get rid of SPR_vtop, and
  298.        replace all uses by SPR_stop.
  299. 970204 Disk change fix from Mathias Ortmann.
  300. 970203 New file ncurses.c, from Samuel Devulder.
  301.        Disabled Exec stuff completely. Now it isn't even compiled in anymore.
  302. 970129 Changes from Samuel Devulder for Amiga and Christian Bauer for BeBox.
  303. 970122 Reorder the set_planes_unaligned functions so that better code is
  304.        generated. Remove the or_planes_unaligned functions, add a parameter
  305.        do_or to the set_planes functions and rely on the compiler to optimize
  306.        the additional if away.
  307.        post_decide_line() can now turn DMA off early.
  308.        Make struct flag_struct 64 bits large for i386 systems, so we can use
  309.        long move insns without clobbering the X flag.
  310.        "make clean" should delete machdep/support.o.
  311.        Maybe we do need SPR_vtop after all - undo 970120 change. Instead,
  312.        comment out the code that clears the pos and ctl words at vsync time.
  313.        In xwin.c, restrict window height to 300 or 600 depending on linedbl
  314.        mode.
  315. 970121 Get rid of SPCFLAG_BLIT, call do_blitter() directly.
  316.        In finish_decisions(), don't check for sprite draws in the border.
  317.        Reimplement the SMART_UPDATE define so that the memcmpy() overhead can
  318.        be avoided by not setting it (but this usually loses).
  319.        Detect 7 lores planes in BPLCON0() and change to 6 to avoid memory
  320.        clobbers.
  321.        In pfield_draw_line(), do memcpy linedoubling after handling the line
  322.        to be doubled, not when we see a LINE_AS_PREVIOUS. Get rid of prev_ypos
  323.        parameter.
  324.        Add special code for bpldelay1 == bpldelay2 to the UNALIGNED_PROFITABLE
  325.        code.
  326.        In pfield_init_linetoscr(), when delays 1 and 2 differ, clear the areas
  327.        which are covered only by half of the planes at the start and end of
  328.        the DDF area.
  329.        Replace FASTER_CPU and LINUX_SOUND_SLOW_MACHINE with M68K_SPEED.
  330.        Replace fast_unaligned_memset macros with fuzzy_memset; use this also
  331.        in pfield_init_linetoscr().
  332.        Use real (PAL) vblank end in do_sprites().
  333. 970120 Mask out high byte in DDF{STRT,STOP}
  334.        Oops, forgot about long frames while calculating the bounds of all the 
  335.        maxvpos*2-sized arrays. Increment them all by two.
  336.        Try to detect empty sprites before recording them for the drawing code,
  337.        but be careful not to hurt attached sprites.
  338.        From Paul Kienitz: hack for keyboard code in cia.c to work better with
  339.        newer Kickstarts; small cleanup in cpuopti.c.
  340.        Undo yesterday's change in copper_memory_cycles(), instead call
  341.        decide_line() each iteration and test whether copper_cycle_time == -1
  342.        to determine whether we're vertically in the DIW.
  343.        calculate_copper_cycle_time() could get astronomical plane counts due
  344.        to missing masking operation.
  345.        No need to put the copper to sleep for one memory cycle after a WAIT,
  346.        merge that with the two cycles for the next instruction.
  347.        Get rid of SPR_vtop, no longer needed (it was unnatural anyway)
  348. 970119 Implemented alternate pfield_doline functions that access the apixels
  349.        array at unaligned addresses; conditional on UNALIGNED_PROFITABLE.
  350.        Move LORES_HACK from config.h to custom.c.
  351.        Fix loop exit test for pfield_linetoscr_hdouble_asm8(). Clear the
  352.        right parts of apixels in pfield_init_linetoscr() when LORES_HACK is
  353.        enabled.
  354.        Get rid of bordercol array: the decision-making code should handle
  355.        lines in the border correctly by setting line_changed.
  356.        Disable bitplane DMA if more than 4 hires bitplanes are set in BPLCON0.
  357.        Fix some more copper timing inaccuracies: used to test
  358.        thisline_decision.which without calling decide_line() before.
  359. 970118 Now remember BPLCON1 changes during data fetch. New functions
  360.        decide_delay(), pfield_adjust_delay(); new fields in struct drawinfo
  361.        and new variables next_delay_change, delay_changes.
  362.        Forgot to set copstate to COP_morewait in one case in do_copper().
  363.        Add a kludge that checks for copper position 0xDC and changes it to 
  364.        0xDE.
  365.        Restore equality test for vertical sprite positions. Disable sprite
  366.        DMA before the end of the vertical blank area.
  367.        Mask not only the positions, but also comparison values in 
  368.        calc_copcomp_true().
  369. 970117 Change custom_bput to put the byte value in each half of the word that
  370.        is put.
  371. 970116 disk.c: Set the gap between sector 11 and 0 to 380 words. Andromeda's
  372.        "Seven Seas" demo expects at least 320. Make the KILLEHB bit
  373.        conditional on AGA_CHIPSET. Decide BPLCON1 (scrolling delays) in
  374.        decide_diw(). Fix off-by-one errors in the very_broken_program case
  375.        of decide_plane(). Fix aspect calculation when horizontal resolutions
  376.        differ. Simplify copper horizontal comparison logic slightly.
  377.        Fix divide by zero errors when reading from empty floppies.
  378. 970115 pfield_draw_line(): Check for frame_redraw_necessary also for border
  379.        lines. New global variable pfield_last_drawn_line, used to implement
  380.        clever Y centering. Make the KILLEHB test conditional on ECS_AGNUS.
  381.        Move joystick and sound initialization before gui startup. Adapt tui.c
  382.        so it understands the gfx_requested_* options.
  383.        We can't always avoid clearing pixdata.apixels if DIW is larger than
  384.        DDF. There may be sprites in the area outside DDF, but inside the DIW,
  385.        so we can't just adjust linetoscr_diw_{start,end} blindly in
  386.        pfield_init_linetoscr() [Sanity Arte demo].
  387. 970114 Bebox diffs from Christian Bauer.
  388.        Support for Symmetric Multi Penguins under Linux (start second thread
  389.        with clone and use some pipes for communication - rather simpleminded
  390.        for now). Rework do_flush_line() and do_flush_screen() so that X
  391.        libraries are only called from the first thread.
  392.        Eliminate valid field from struct decision (set which to -2 instead of
  393.        valid = 0)
  394.        Fix definition for gui_filename() in xdebug.c to use const char * for
  395.        the second parameter. Remove CRs from disk.c (now how did they get in
  396.        there??). Likewise for cpuopti.c.
  397. 970113 When post_decide_line() detects mid-line DDF change, must adjust
  398.        bitplane pointers in decide_plane() also. Make plfstrt the earlier a
  399.        position in this case, and adjust bitplane pointers/modulos
  400.        accordingly.
  401.        current_hpos() isn't what GCC calls a constant function.
  402.        Replace line_drawinfo[current_change_set] with new variable
  403.        curr_drawinfo throughout. Likewise for new variables prev_drawinfo,
  404.        {curr,prev}_{color_{change,table}s,sprite_positions}; all initialized 
  405.        in init_drawing_frame (). Turn line_data into a 2dim. array, do some
  406.        CSE/SR on line_data[lineno] in pfield_doline_{l,h}() and
  407.        decide_plane(). Make some custom registers unsigned int instead of
  408.        UWORD.
  409.        calc_copcomp_true(): Masking with 0xF000 isn't likely to give 0xC0000.
  410.        Comment out bplcon{3,4} from struct decision.
  411. 970112 filesys.c, action_set_protect(): if __unix is defined, check whether
  412.        user wants to change directory protection, and if so, force rwx to be
  413.        the new protection.
  414.        Force sane window sizes in xwin.c, and set width/height from mode specs
  415.        in svga.c.
  416.        Implement LORES_HACK compile-time option.
  417.        Whee, there _are_ broken programs that enable bitplane DMA in the
  418.        middle of the data fetch area, draw half a picture on the first line
  419.        and the full picture on all subsequent lines. New function
  420.        post_decide_line(), called from BPLCON0() and DMACON() which tries to
  421.        detect this case and turns the decision from border to playfield if
  422.        necessary.
  423.        New arrays, sprvstart and sprvstop, calculated in SPRxPOS and SPRxCTL,
  424.        and used by do_sprites. Handle sprites with vstart == vstop correctly.
  425.        Sprite vpos comparisons are now done with <= , not ==.
  426.        _Now_ the X86-specific linetoscr routines do their masking correctly.
  427.        configure: If we have GCC, #define GCCCONSTFUNC as __attribute__ 
  428.        ((const))
  429. 970111 Eliminate can_draw from struct decision.
  430.        Change vertical DIW code; use enum of two states (waiting for start and
  431.        for stop) which is updated in decide_line(). Lines during the wait for
  432.        stop phase are decided as border. No data is fetched outside the
  433.        vertical DIW.
  434.        Optimize copper memory cycle calculation a little: the new variable
  435.        copper_cycle_time is set to a time >= 0 if this time is constant
  436.        (i.e. 2). Calculated whenever DMA, BPLCON0, or DIW state changes.
  437.        blitter.c, genblitter.c, custom.c: For BLTBDAT, follow the HRM which
  438.        says that immediate data is shifted as soon as it is written. This 
  439.        seems to be wrong for the A channel, though. Also, don't change prevb
  440.        during blitter loops if DMA B is off (Sanity Arte). Turn FAST_BLITTER
  441.        stuff into run-time option "-n", and eliminate the ancient blitting
  442.        code (former FAST_BLITTER == 0).
  443.        Big OOPS: Copper move checked copcon, but there was no COPCON function
  444.        so it was always zero -> copper-controlled blitter never worked. As a
  445.        speed optimization, recognize 00010000 copper commands and put the
  446.        copper to sleep until the blit is finished.
  447.        Slow down the blitter in decide_line() if bitplane DMA steals blitter/
  448.        copper/CPU cycles (but this code is commented out for now).
  449. 970110 New function pfield_init_linetoscr(). Move calculation of diw_end and
  450.        diw_start values there from x86-specific code. Also use DDF values to
  451.        determine where data in pixdata.apixels is valid. The x86-specific
  452.        linetoscr routines now only do the alignment masking (and they now do
  453.        it correctly, too).
  454.        Got rid of the display-related contents of struct draw_info, make 
  455.        static variables and them initialize from pfield_draw_line() only when 
  456.        necessary in function pfield_expand_dp_bplcon (). Get rid of the four
  457.        saved_* arrays, remember line_drawinfo instead now that it's smaller.       
  458.        Color compare avoidance didn't work because color_src_match didn't get
  459.        set when a compare was successful. Fixed.
  460.        Reorder parts of the decision-making code so that less redundant checks
  461.        are performed.
  462.        Add clever x centering. Change "-O" option parameter format.
  463.        In md-i386-linux/support.c, memcmpy(), do memcmp() first, then switch
  464.        to a plain memcpy routine once we find the first difference.
  465.        Patches from Stefan Reinauer/Christian Schmitt for 
  466.        xdebug.c/configure.in
  467.        New uae-ui.tk from Volker Zota.
  468.        Add --enable-profiling to configure.in.
  469.        Check for period==0 in AUDxPER() was accidentally commented out -
  470.        revert.
  471. 970109 Some tweaks in X86.S, plus a new option X86_PPRO_OPT to use movzbl
  472.        instead of xorl/movb when possible.
  473.        Fix maxline calculation in finish_drawing_frame().
  474.        Make next_lineno always a valid array index. Decrease minfirstline to
  475.        21 (NTSC vblank end). New option -O to specify display parameters,
  476.        supersedes -d and -C which will be removed eventually. Differentiate
  477.        between line doubling and aspect correction. Put aspect correction code
  478.        in custom.c.
  479.        Remove some more unused stuff from custom.c.
  480.        Fix Makefile problems when cpuopti isn't used.
  481. 970108 use_lores isn't initialized before custom_init(), setup lores_frame and
  482.        friends in customreset(). Optimize spixstate clearing. Optimize border
  483.        drawing with copper color changes (use fill_line instead of linetoscr)
  484.        Fix the sprite DMA logic, it now works with the Interference demo.
  485.        Silly bug: Sprite 7 never got displayed (introduced sometime last week)
  486.        Implement USER_PROGRAMS_BEHAVE for normal (non-compiler) CPU emulation.
  487.        Add most of Gustavo's last patch (new dir md-i386-dos)
  488. 970107 Finish rewriting most of the drawing code in custom.c/X86.S. See
  489.        README.PROGRAMMERS and source for details. Improvements include better
  490.        copper precision, better interlace support, hopefully much less bugs
  491.        and not too many new ones.
  492.        Remove calc_adjustment() and gfxvidinfo.x_adjust; replace with code in
  493.        custom.c that looks at gfxvidinfo.follow_diwstop (new field)
  494.        Some operations (like EHB playfields) now have a higher penalty than
  495.        before, the assumption being that these are rare and the normal case
  496.        runs faster if it doesn't have to care too much about exceptions.
  497.        Fix sign mismatch bug in BPL1MOD() and BPL2MOD().
  498. 970104 Move x_ShowEA() from xdebug.c in newcpu.c, rename as ShowEA().
  499. 970102 Add check for XK_W to decode_es() in xwin.c.
  500.        New uae-ui.tk from Volker Zota.
  501. 961218 Add a patch by Bernie Solomon to overcome a problem with K&R compilers. 
  502.        Change X86.S in a way that may make it either faster or slower.
  503.        Fix ADF_EXT1.
  504. 961217 #ifdef XK_dead_*, since Solaris doesn't have it.
  505. 961202 Fixed joystick.h problem in configure. X11/DGA support from Kai
  506.        Kollmorgen.
  507. 961117 Some fixes in svgancui.c.
  508. 961112 Gustavo's latest patch, with GUS support for DOS by Michael Sontheimer.
  509.        Add menu browsing to tui.c/svgancui.c
  510. 961107 Fix m68k_areg and m68k_dreg macros (put args in parentheses)
  511.        Initialize gfxvidinfo.maxlinetoscr in xwin.c (found by Sam Devulder)
  512. 961104 svgancui.c tui_refresh() routine tweaked to work with the non-standard
  513.        ncurses that came with my new SuSE-Linux CD.
  514. 961031 Added Christian Schmitt's xdebug.c (disabled for this release)
  515. 961024 Module search function from Michael Krause.
  516. 961019 Add Samuel Devulder's Amiga patches.
  517. 961018 Don't use -lm on NeXTStep.
  518. 961017 configure checks for -lforms.
  519. 961016 Ian Stephenson's new NeXTwin.m. Make CLXDAT return 0 (no collisions)
  520.        transdisk and transrom patches from Rodney Hester. Don't warn about
  521.        256K Kickstarts. Check diskfile sizes and try to determine whether it's
  522.        a normal or a HD diskfile. No HD drive identification yet (is it
  523.        different?)
  524. 961013 Corrected lots of bugs in the return address stack. Fix some errors in
  525.        the compiler memory management. Use the "locked" flag for hash entries
  526.        differently, and don't enforce it on a cache flush. Compile JMP to a
  527.        constant address.
  528. 961012 Remove regs from cache before sign extending them for ADDA, MOVEA and
  529.        similar things. Compile NOPs to nothing. Implement variable shifts/
  530.        rotates. Most shifts clear the V flag: Handle this in the compiler by
  531.        some extra magic sequences after shifts or in the CC_AFTER_RO case in
  532.        flush_cc_cache().
  533.        Implement a stack containing return addresses and their hash entries,
  534.        and compile JSR (to constant addresses)/BSR/RTS instructions inline.
  535. 961011 compiler.c: Several bugs introduced in the last two days fixed.
  536.        New function compile_note_modify() which is used when an ea is
  537.        modified. This replaces calls to storeea with eaino_s == eaino_d.
  538.        Bah, the 386 doesn't set flags on a NOT. Use CC_TEST_REG again.
  539.        Do flag life analysis until no more changes are found.
  540.        Make sure all "data" parts of EAs are locked exclusively (esp. for 
  541.        LEA, PEA)
  542. 961010 compiler.c: Finish yesterdays changes. Get rid of reg/offset
  543.        bookkeeping in m68k_compile_block(), keep the information in struct
  544.        ea_info instead. Rewrite all instructions to use the new fetch and
  545.        store routines.
  546.        Don't force a byteorder conversion in sync_reg() if the reg doesn't need
  547.        to be written back. Don't do a SAHF or equivalent in compile_condbranch
  548.        if we are doing a BRA or BF.
  549.        Don't use CC_TEST_REG for NEG and NOT (this was inefficient for NOT and
  550.        wrong for NEG).
  551. 961009 compiler.c: Two types of locks for registers; shared and exclusive.
  552.        Implement better EA fetching and storing routines. For pdi addressing
  553.        modes, lock the necessary registers shared before calling prepareea.
  554.        Unlock those registers again in generate_possible_exit().
  555. 961008 MOVEM instructions in the compiler to an absolute address could have
  556.        caused random memory corruption.
  557. 961007 Spanish keyboard support for X by Ruben Martinez. Some configure fixes
  558.        (don't assume current dir is in path, don't assume ncurses.h exists if
  559.        libncurses does).
  560.        If we're calling 68k code from an emulator function, don't use compiled
  561.        code.
  562.        Add a compilation option USER_PROGRAMS_BEHAVE (for compiler). Make
  563.        compiler hash table larger.
  564. 961004 Fix typo in configure.in.
  565.        Modify the compiler so it doesn't ever throw away code, unless it's
  566.        necessary for a cache flush.
  567.        Didn't quite squash the compiler flag bug yesterday. Try again.
  568.        In filesys.c, do_find(), add a parameter fallback that indicates that
  569.        the open should be retried with O_RDONLY if it failed with O_RDWR.
  570.        Use this in find_input(). This fixes problems with r/o files on r/w
  571.        volumes.
  572. 961003 Play around with the x86 specific memory access functions. Problem:
  573.        __attribute__((regparam)) isn't reliable, and it seems that that's a
  574.        rather hard to fix bug in GCC. Add some alternatives to
  575.        md-i386-linux/memory.h; these aren't used yet though.
  576.        Huh, the compiler was completely wrong about the flag needs of
  577.        conditional instructions. I wonder how it could work at all...
  578.        Remove a and d arrays from struct regstruct; replace with array regs
  579.        with 16 elements. This allows better code for get_disp_ea()
  580. 961002 BeBox diffs from Christian Bauer. Move all code from main() to new
  581.        function real_main().
  582. 961001 Use do_get_mem_*() functions for nextiword(), nextilong() and new
  583.        function nextibyte().
  584. 960930 genblitter optimizations: Don't generate expressions in genblitter, use
  585.        a second program called gengenblitter to generate a table of
  586.        expressions for genblitter to use. gengenblitter knows about a lot of
  587.        rules to simplify expressions. Some other tweaks to make GCC output
  588.        better assembly for blitfunc.c.
  589. 960927 Turn off LED() in xwin.c (may fix SunOS joystick emulation problems)
  590.        Call XFlush() and XSync() when exiting.
  591.        Add some DOS patches.
  592.        Add hooks in filesys.c to support filesystem units in a GUI. Use them
  593.        in tui.c. Bugfixes in svgancui.c. Change the way tui_refresh() works.
  594.        New option "-A".
  595. 960925 For read-only filesystems (CD...), use O_RDONLY in action_find_input.
  596. 960923 Save options file even if rename fails.
  597.        Mirror address space every 16MB like we used to (got turned off by
  598.        accident).
  599.        Move some checks out of options.h into configure. Set up md-*
  600.        directories with machine-dependent stuff in them; configure creates
  601.        a link called machdep to the appropriate one.
  602. 960918 Solaris sound update from Manfred Thole.
  603. 960917 Add a timer.device replacement (buggy).
  604. 960916 Tristan Cavelier's french keyboard patch.
  605.        Apply ReadTheSpecsBeforeYouWrite(tm) technology to AddPort().
  606.        Implement RemPort(), GetCC().
  607. 960915 Tighten up some of the return values in Exec.
  608. 960914 EXEC: Implement RemTask(), ObtainSemaphoreList() and
  609.        ReleaseSemaphoreList(). Set up more fields of the ExecBase properly
  610.        and Enqueue it in the library list. Make InitResident call AddLibrary
  611.        when appropriate (otherwise, intuition is never put into the library
  612.        list). Fix major braino in Obtain/ReleaseSemaphore() (tried to Enqueue
  613.        tasks into two lists). Make OpenLibrary() honor the version parameter.
  614. 960913 EXEC: Idle task now runs in user mode (abuse 0xFF0D as second STOP
  615.        instruction). Make EXEC_IntTrap perform the RTE before trying to
  616.        schedule.
  617. 960912 Solaris sound didn't compile. So much for making blind changes without
  618.        being able to test them.
  619. 960911 As soon as you compile it under Solaris, it bombs... Now check that the
  620.        hardfile exists before determining the size in main.c.
  621.        execlib fixes: Set master DMA enable bit at startup, fix interrupt
  622.        code to survive an interrupt that occurs before the proper SetIntVector
  623.        call. Implement RawDoFmt(), CloseDevice(), CloseLibrary(),
  624.        FindResident().
  625. 960905 Lower 8 bits of POTGOR should be 0.
  626. 960904 Implement MULU, MULS, ADDX and SUBX in compiler.
  627. 960903 ncurses interface works. DOS people: please use the new portable tui.c
  628.        and turn dos-ui.c into a frontend for conio.h, similar to svgancui.c
  629.        In xui.c, unlink the temporary files ASAP.
  630.        Two new command-line options, "-o" and "-G".
  631.        Get rid of sz_unknown.
  632.        compiler.h, compiler.c: New files.
  633.        filesys.c, action_read(): Added a hack to test whether the first four
  634.        bytes read from a file a file contain 0x000003F3 (HUNK_HEADER), in
  635.        which case there's probably a LoadSeg() call going on and we ought to
  636.        flush the cache. Also, use the fact that memory is now linear.
  637. 960902 Struggle a bit with dos-ui.c, rename it to tui.c (text-based ui), add
  638.        new file svgancui.c (ncurses ui) and try to make these two understand
  639.        each other.
  640. 960829 New transdisk from Stefan Ropke (can write images)
  641.        Apply Patrick Hanevolds BeBox patches.
  642. 96082x many changes to Exec. Still not booting (DMACON seems not to be set up
  643.        properly, and sometimes Signal is called with task==0).
  644. 960821 Solaris sound from Manfred Thole.
  645. 960820 In filesys.c, get_fileinfo(), return volume name for top-level 
  646.        directory.
  647. 960819 Reimplement WritePixel(). Layer locking is still missing.
  648. 960818 Reverse meaning of -x flag for X11. More Exec code.
  649.        Several changes to the main CPU loop and the way call traps work.
  650. 960817 Implement some simple Exec functions (Lists, AllocMem & friends)
  651. 960816 filesys.c fixes from David Varley.
  652. 960815 Implement graphics library region functions.
  653. 960814 Modify memory layout: All memory is linear now; get_real_address()
  654.        returns a (UBYTE *).
  655. 960810 Add Gustavo's latest DOS code.
  656.        In configure, include <sys/param.h> earlier for the sake of some *BSD.
  657.        Add three options for sound code (bits, frequency, buffer size).
  658.        Make -S option take a parameter; remove SPEED_UP_SIDMON_MODULES.
  659.        New version of transrom (return 0, duh).
  660. 960805 Fixed the blitter line mode emulation (this time, really! I hope.)
  661.        Thanks to Fabio Ciucci for a detailed description of the correct
  662.        behaviour.
  663. 960730 Spent the last three days trying to make the filesystem emulation
  664.        bootable by adding an expansion device for it. A fair bit of trial and
  665.        error, but now it works! Even the hardfile now works with Kick 1.3, but
  666.        you have to mount it manually after booting.
  667.        hardfile.c, filesys.c, expansion.c and autoconf.c now are an
  668.        entangled mess which badly needs to be cleaned up.
  669.        We can now mount more than one filesystem even with Kick 1.3: we
  670.        recognize them by param 2 of the startup packet, which has the same
  671.        value as the dn_Startup field of the devicenode.
  672.        Make Kickstart replacement work again (didn't like the CPU emulator
  673.        changes)
  674.        Include preliminary serial support from Stefan Reinauer.
  675. 960728 Fixed the scancodes for <> and #' keys in svga.c
  676.        Apparently, CIA timer latches ought to be 0xFFFF after a reset
  677.        (prevents Eagleplayer from crashing occasionally). #ifdeffed out a
  678.        slightly weird call to INTREQ from RethinkICRB()
  679. 960727 Sound code rewritten again. Now uses events (five new ones). All 
  680.        modules seem to play correctly now. It's a bit slower, though.
  681.        AF sound should work again, patches from Marcus Sundberg.
  682. 960723 ... and more CPU emulation bugs fixed by Herman.
  683.        Added uae.library from Tauno Taipaleenmaki, plus support files in the
  684.        "amiga" directory.
  685.        Added some files for the XFree86/OS2 port from Krister Bergman.
  686.        Reorganized all the directories.
  687. 960717 Add latest patch from Herman.
  688.        More FAST_BLITTER options: 4 and 5. These finish the blit immediately.
  689. 960713 Call XAutoRepeatXXX() only if we know we want to change the state.
  690. 960709 Work around a few AIX bugs (ughhh... what a broken OS). New test for
  691.        sys/select.h.
  692.        In xui.c, don't try to communicate with a dead process.
  693. 960704 More bugfixes from Herman.
  694.        Get rid of dummy_xlate(), use default_xlate() to abort with error.
  695.        In svga.c, set correct_aspect to 0 if using lores.
  696.        Change the Bcc exception 3 handling code a bit.
  697.        Add new program "cpuopti" that takes gcc-generated assembly files and
  698.        optimizes away unnecessary pushl/popl instructions on the x86.
  699. 960701 68020 exception handling & various bugfixes from Herman ten Brugge.
  700.        In ersatz.c, use 0xFF0D instead of 0xF00D as trap opcode.
  701.        Do MMU "emulation" (no-op MMU instructions, probably many cases decoded
  702.        incorrectly).
  703. 960627 New file LIESMICH, with minimal German instructions. Somebody want to
  704.        translate the docs to French, Spanish, Italian, all the Scandinavian
  705.        languages, Hebrew, Polish, Dutch, Russian, Welsh, Gaelic and something
  706.        Joe_Luser@aol.com understands? (No offense meant - I'm sure there are
  707.        brillant minds using AOL. There must be.)
  708. 960626 In zfile.c, make sure we delete the temporary file even if file
  709.        decompression fails.
  710.        Reimplemented sound support, this time following the HRM closely. Seems
  711.        to work fine most of the time, but occasionally loses drum beats in
  712.        TFMX modules. do_sound() is now unconditional, it calls
  713.        flush_sound_buffer(), which is system-dependent. This breaks everything
  714.        except Linux sound for now :(
  715.        Add Herman ten Brugge's 68020/68881 emulation code.
  716.        FreeBSD chokes if sys/mount.h is included without sys/types.h. Fix the
  717.        configure script.
  718. 960622 More work on AGA code.
  719.        Removed 2-bit display routines from custom.c. Ian: please use dithering
  720.        code.
  721.        Make slowmem and chipmem sizes run-time configurable.
  722.        Mask out the high bits in BLT?PTH().
  723.        Add exception 3 checks to Bcc/BSR instructions. Seems to be not quite
  724.        correct yet.
  725.        Completely rewrote the disk emulation. We now create a big track buffer
  726.        full of MFM data, used in a cyclic fashion by DSKBYTR() and friends. 
  727.        The current position in the buffer is determined by the cycle counter.
  728.        DMA reads are now done in one piece. Two new event types: ev_diskblk 
  729.        and ev_diskindex.
  730.        ARRGGHH! The RSI demo has _completely_ broken disk loading routines.
  731.        They start disk DMA on a block while the blitter is still working on 
  732.        the same memory region.
  733.        In zfile.c, unlink() the temporary file directly after opening it so
  734.        it will be freed by the OS as soon as we close it (or crash... :)
  735. 960621 Merge pfield_sprite_h() and pfield_sprite_l() into one function.
  736.        Split off new files blitter.c and blitter.h from custom.c.
  737.        Fixed null-pointer dereference in zfile.c when filename has no
  738.        extension.
  739.        Add new field maxline to gfxvidinfo that prevents writing past the
  740.        screen buffer if it has less lines than expected.
  741.        Modify the 256 color allocation routine to set nb_cols to the same
  742.        value first for r,g and b; allocate everything as usual and fill the
  743.        lost colors afterwards with those that have the greatest difference.
  744. 960620 For some extremely weird reason, it is faster to simply call the
  745.        assembly-optimized pfield_linetoscr_full routines _twice_ to double the
  746.        line than calling the new (also assembly-optimized)
  747.        pfield_linetoscr_full_double routines, at least when writing directly 
  748.        into the framebuffer. If someone has a good theory why, let me know 
  749.        about it.
  750.        Drawing into memory is faster with the _double routines, but not
  751.        noticeably (about 1%).
  752.        Consequence: Removed the new pfield_linetoscr_full_double assembly
  753.        routines again.
  754.        Add a "--disable-gui" option to configure.
  755.        Add Samuel Devulder's dithering code. Provide support for mono and
  756.        16 color X servers.
  757.        Put an assembly version of DitherLine() in X86.S.
  758.        New color mode (3) available, tells UAE to use 256 colors and dither
  759.        the image. This is meant for people who have only a 256 color X server
  760.        available, but it works with the SVGA version, too. It's much slower
  761.        than normal 256 color mode, though.
  762.        Use the color allocation algorithm from the dither code in
  763.        alloc_colors256(), too.
  764. 960619 New files: zfile.c and zfile.h, from Samuel Devulder. These provide
  765.        transparent decompression of various compressed file formats. Enabled
  766.        by configure only for Unix systems.
  767.        Eliminate dont_want_aspect. New option "-C", sets correct_aspect. Make
  768.        video mode 3 640x480, video mode 4 800x600. Honor correct_aspect in
  769.        320x400, 640x480 and 800x600 mode with SVGAlib.
  770.        Add fields maxlinetoscr and x_adjust to gfxvidinfo.
  771.        Rename pfield_slow_linetoscr() to pfield_do_linetoscr(). Use new fields
  772.        in gfxvidinfo to enable writing directly to the framebuffer in
  773.        resolutions with <800 horizontal pixels.
  774.        New function pfield_do_linetoscr_full(), called when sure that full
  775.        line update is being done.
  776.        Move some of the usage() information into some target_specific_usage() 
  777.        functions, defined in the various system-specific files.
  778.        Support lower resolutions with LOW_BANDWIDTH, too.
  779.        memcpy() within screen memory is dog slow. Prevent some common cases:
  780.        1. Use fill_line() to double a line in the border.
  781.        2. Add a parameter to pfield_do_linetoscr_full() to indicate whether 
  782.           the line has to be doubled. New functions
  783.           pfield_linetoscr_*_double_slow() that simply do a memcpy(), plus 
  784.       optimized ones in X86.S that are much faster by avoiding the copy.
  785.        Smart update code could get confused by lores modes when
  786.        prev_max_diwstop changed from one frame to the next. New variable
  787.        frame_redraw_necessary, which acts as a counter. It's initialized to
  788.        2 in interlace mode to handle that case properly, too.
  789.        Move sprite priority checks into pfield_sprite_?(), move HAM
  790.        calculations into new function decode_ham6() to simplify the various
  791.        linetoscr functions.
  792.        Fixed a bug that would cause sprites to get deformed in some cases
  793.        when they overlapped (never seen it).
  794. 960618 New file: dos-snd.c, from Gustavo.
  795.  
  796. 960617 Release 0.6.0
  797. 960617 Fix memory clobber in X86.S when diwfirstword==0. Eliminate double test
  798.        for HAVE_SYS_MOUNT_H in sysdeps.h.
  799. 960616 Handle programs that don't wait for the blitter by finishing a pending
  800.        blit as soon as a blitter register is written to (regardless of DMACON,
  801.        to be safe).
  802.        Call gui_led only if the LED changed.
  803. 960615 Fixed dual playfield sprite priorities. Optimized dual playfield code
  804.        in X86.S. More work on AGA code. Get joystick status only in
  805.        vsync_handler to speed things up.
  806.        Make blitter fill more intelligent with table lookups instead of loop.
  807. 960614 DOS update from Gustavo. Pass real bitplane pointer to
  808.        bpl_data_differs(), don't calculate it again.
  809. 960610 Fixed silly INTEL_FLAG_OPT bug: The new __asm__ expressions use
  810.        regflags, which is of course _regflags on a.out...
  811.        More BeBox fixes from Christian.
  812.        Make the CIA bank bigger (A0..BF) and relax the CIA A/B selection
  813.        checks to make broken software (Kingsoft's Emerald Mine, reportedly)
  814.        happy.
  815.        Default framerate is now 1.
  816. 960603 New BeBox code from Christian. Fix test for ELF in configure.in.
  817. 960529 genblitter.c: generate blitfunc as a function taking ULONGs and
  818.        returning an ULONG. This makes custom.o about 4500 bytes smaller on the
  819.        x86 by removing worthless size prefixes, and should increase
  820.        performance (better for the cache, and the P6 reportedly doesn't like 
  821.        16 bit instructions anyway).
  822.        memory.c: Load Kickstart in one block and swap bytes after that if
  823.        necessary (eliminates the need for the special bebox load routine)
  824.        custom.c: Some preliminary work for AGA support.
  825. 960528 Saw a real awful piece of code that detects the right mouse button by
  826.        reading a value from POT0DAT, counting up to 25, reading from POT0DAT
  827.        again, and deciding the button is pressed if the value changed. Urgl!
  828.        Added POT0DAT() in custom.c ...
  829.        Gustavo's latest patches.
  830. 960525 Do index pulse handling in CIA_hsync_handler(). Make sure bit 12 in 
  831.        INTREQ gets set on an index pulse. Don't call DISK_Index() for now,
  832.        since this breaks the Workbench.
  833.        The CIA code should _probably_ not be resetting the bits in INTREQ.
  834.        Disable this as an experiment, let's see what breaks.
  835. 960524 Z flag handling for ABCD/SBCD/ADDX/SUBX was wrong (must be clear if not
  836.        zero, was set if zero). Some other flag bugs in these functions fixed.
  837. 960523 gfxlib.c update from Christian Schmitt. Some new Mac code from Ernesto,
  838.        still not all of it, though. Italian keyboard from Alessandro Bissacco.
  839. 960522 Fix the CHK instruction. Implement middle mouse button.
  840. 960515 Fix some Nextstep problems in configure.in.
  841. 960513 New Makefile target "streifenfrei" to remove all output from configure.
  842.        Use autoconf 2.7; 2.9 is buggy.
  843. 960512 Remove BIG_ALIGNMENT hack. Remove superfluous pfield_fetchdata() call
  844.        in pfield_doline_slow_l() that resulted in garbage on the screen.
  845.        Move blttbl array from custom.h to genblitter.c
  846.        Use new lookup tables imm8_table and areg_byteinc in CPU emulation
  847.        instead of ?: expressions.
  848.        GCC appears to generate better code if the opcode is passed as ULONG to
  849.        the CPU emulation functions instead of as UWORD.
  850.        Modify some of the flag emulation __asm__ statements so that GCC uses
  851.        less registers for them.
  852. 960510 Cast malloc() results to char *, for C++ compilers.
  853. 960509 Use test for GCC and __i386__ in options.h to decide whether to use
  854.        intel flag optimization.
  855.        Use test for wish4.0 to decide whether to use the GUI.
  856. 960507 New bebox.cpp from Christian. AF sound patches from Marcus Sundberg.
  857. 960505 Fix the configuration stuff so it works. Fix some bugs in gfxlib.c
  858. 960504 Use GNU autoconf scripts to generate Makefile and sysconfig.h. Add new
  859.        files sysdeps.h that includes the right system header files. Remove
  860.        amiga.h and Makefile.
  861. 960502 More Next code from Ian (new Uae.app directory, 2 bit drawing for
  862.        custom.c).
  863. 960501 Allow the sound driver to set the frequency to a value that is slightly
  864.        different from the requested one.
  865. 960430 Added AmigaOS port from Olaf Barthel.
  866. 960427 Fixed single playfield sprite priorities in X86.S.
  867. 960426 Added new NeXTwin.m from Ian.
  868.        Turn off the blitter delay in line mode.
  869.        Added a CPU optimization from Olivier Raoul: gencpu now reads a file
  870.        "insncount" that can be generated by UAE during execution and generates
  871.        specific functions for the most common opcodes. Not documented yet.
  872. 960414 Reimplemented the fast disk emulation in a more sane way. Also it's
  873.        only done for reads now. (Plus, it no longer works :-/ Need to work
  874.        some more on this).
  875.        In blitter emulation, defer not only the setting of the bltfinish bit,
  876.        but actually defer the whole blit for the number of cycles it will
  877.        take. This makes programs the clear the screen while it is still being
  878.        displayed look much better.
  879.        Changed supervisor mode handling around a bit (was messy).
  880.        New DOS code from Gustavo.
  881. 960412 Removed smart update method 2. Added Alessandro Bissacco's blitter
  882.        optimization patch.
  883.        Fixed some sprite problems: during hysnc, clear sprpos and sprctl, and
  884.        don't do_sprites() in line 0.
  885. 960409 Be a little more intelligent about when to call pfield_linetoscr() from
  886.        pfield_doline_slow(). It's only necessary if a color register changed.
  887.        If it can be deferred to the end of the line, use the the _full
  888.        variants.
  889.        Some CIA TOD fixes.
  890.        Better transdisk, accepts first/last track parameters.
  891. 960405 New function memcmpy(), inline assembler for the i386. Compares two
  892.        memory blocks and copies them at the same time. Used in
  893.        bpl_data_differs.
  894. 960404 French keyboard from Tristan Cavelier. Parallel port emulation from
  895.        Stefan Reinauer.
  896.        Turn bpl?pt and r_bpl?pt into arrays, simplify some code using them.
  897. 960401 Some parts of Ernesto's new Mac sources.
  898. 960331 filesys.c: Close filedescriptors in free_key(). get_path() sometimes
  899.        read uninitialized bytes.
  900.        Minor cleanups all over the place.
  901.        unchain_mnn() leaves sibling intact, but clobbers next. customreset()
  902.        didn't care about that and crashed.
  903.        Use the __asm__("intel_flag_lookup") magic not only for DOS.
  904.        Support 320x300 for X (without LOW_BANDWIDTH).
  905.        Add new function fast_memcmp(), defined as memcmp if __i386__ is
  906.        undefined, otherwise a slightly optimized inline assembly function.
  907. 960329 Some bug fixes in gencpu.c
  908. 960328 Stupid programs write odd playfield modulos into the hw registers...
  909.        Eek! Sometimes, linedescr[] was indexed with a negative value... Add a
  910.        vpos >= minfirstline check to pfield_may_need_update(). I really need
  911.        to rewrite this in Oberon...
  912.        Don't turn off SHM when LOW_BANDWIDTH is selected.
  913.        Keep the nextpos and linepos variables from pfield_doline_slow_?() as
  914.        globals and initialize them in pfield_may_need_udpate().
  915.        Modified alloc_colors256() some more.
  916.        Try to make sprite DMA follow the Amiga DMA slots more closely by
  917.        adding a currhp parameter to do_sprites() and calling it at the end
  918.        of a scanline or in pfield_may_need_update().
  919. 960327 Added Gustavo's latest DOS code, as far as possible. Modified X86.S to
  920.        use a macro SYM() to create symbol names either with underscore or
  921.        without.
  922.        Fixed some very silly SVGAlib lores bugs. Move screen 8 pixels up in
  923.        low resolution.
  924.        Use diwstop instead of diwstart to caclulate the DIW for 320x200 modes.
  925.        Reset it not only in calcdiw(), but also in init_frame().
  926.        Speed up 256 color allocation a little bit.
  927. 960326 New function flush_block() in xwin.c and svga.c. Called from
  928.        do_flush_line() and (new function) do_flush_screen(). Modify struct
  929.        vidbuf_description, new member maxblocklines that records the maximum
  930.        number of scanlines that do_flush_line() should collect before calling
  931.        flush_block(). If it is zero, then flush_line() is used as before.
  932.        This makes the special case stuff for SHM unnecessary, so it's removed.
  933.        Fixed a stupid bug in events code: Put ev_hsync in front of ev_copper,
  934.        so that do_copper gets called with hpos == 0 instead of hpos == 227 at
  935.        the beginning of the line.
  936.        New function init_frame() that sets up some variables, called from 
  937.        customreset() and vsync_handler().
  938.        Move smart update code to pfield_doline() from pfield_doline_h() and 
  939.        ..._l(). Clean up these two with a macro DO_ONE_PLANE, removing
  940.        duplicate code.
  941.        Implement big blits and ECS chip ids. New configuration options
  942.        ECS_AGNUS and ECS_DENISE.
  943.        Implement MOVEP.
  944. 960325 Before calling pfield_may_need_update(), make sure the value that was
  945.        written to a register actually differs from the previous one.
  946.        New expansion code from Stefan Reinauer.
  947.        Modify struct mem_notify_node to contain a pointer to a valid bit 
  948.        instead of the valid bit itself, so that the playfield code has to
  949.        check only one flag to decide whether to draw the line (SU method 2)
  950. 960324 The chip_flags approach has several problems. A flag may cover an area
  951.        in memory that spans two scanlines, or several scanlines may use the
  952.        same area in memory.
  953.        Provide two other, different methods for the smart update:
  954.        1. Save all the bitplane data for each line and compare the chipmem
  955.           with the saved data to decide whether an update is necessary.
  956.        2. Use a chain of memory_notify_node structs instead of a single bit
  957.           for flags. Each scanline owns a set of these structs and chains them
  958.       into the right place, and the chipmem_?put routines walk the chains
  959.       and set the modified bit for each element.
  960.        Unfortunately, both methods are slower than the old one. Especially the
  961.        first one has some advantages though: it speeds up programs that clear
  962.        the screen each update and write the same contents back, and it
  963.        can speed up double-buffering programs at full framerate, since it does
  964.        not have to check whether the bitplane pointers have changed.
  965.        Remember the first and last drawn line for each frame, and pass them to
  966.        flush_screen. Use this in xwin.c for SHM. Modify SHM logic: if smart
  967.        update is selected, call XShmPutImage() from flush_line() instead of 
  968.        from flush_screen(). But gather blocks of consecutive lines to avoid
  969.        calling XShmPutImage() too often.
  970. 960323 "Smart update" method, based very loosely on Alessandro Bissacco's
  971.        work, implemented:
  972.        Add an array chip_flags that records any change made to specific words
  973.        in chip memory.
  974.        Move all the hardware registers relevant to playfield display into a
  975.        new structure bplinfo. Remember the contents of this structure in
  976.        struct line_description for every line on the screen. Avoid redrawing
  977.        in pfield_doline if the screen memory has not been modified for the
  978.        line to be drawn and if the information from the last frame matches
  979.        that in the current frame.
  980. 960322 Duplicate all functions responsible for drawing (pfield_doline,
  981.        pfield_doline_slow, pfield_sprite, pfield_*word_*res) and append _h
  982.        or _l (ah, the golden C++ days, when we had templates... which never
  983.        worked). Modify the *_l functions to support drawing in low resolution
  984.        (i.e. 320x200). Change the options -d and -H to support selecting color
  985.        mode and resolution, thereby getting rid of some SVGALIB_* options.
  986.        Get rid of the old pfield_*word_*res functions.
  987.        Collect information about the minimum diwstart value during the
  988.        previous frame and use that in case 320x200 was selected to fit the
  989.        image on the screen.
  990.        Get rid of HAVE_JOYSTICK (breaks the "-J" option)
  991. 960321 Give up in op_illg() if opcode is 0x4e7b and the exception handler for
  992.        it is NULL. In that case, it's a 68020 Kickstart.
  993. 960319 New Next code from Ian. SunOS target was still screwed (two CFLAGS).
  994.        Turn -x option into a "hair cursor" option. Support multiple mounts,
  995.        but warn if more than one is seen (still does not work with Kick 1.3).
  996.        Integrated Samuel Devulder's new LOW_BANDWIDTH patch.
  997. 960318 Integrated the start of Markus Gietzen's gfx library replacement.
  998.        Changed the interface between custom.c and the graphics code. There has
  999.        to be a buffer holding the data of all the lines on the screen. For
  1000.        linear SVGAlib modes, this is the video memory. Eliminated -x option,
  1001.        prepare_line(), DrawPixel() and the X_?BIT_SCREEN options, replace with
  1002.        3 versions of pfield_linetoscr for different datatypes. Implement
  1003.        proper handling of the borders above and below the DIW in custom.c
  1004.        instead of in flush_screen().
  1005.        Move common code (color allocation) from all the graphics files to new 
  1006.        file gfxutil.c.
  1007.        Swedish keyboard from Per Olofsson.
  1008.  
  1009. 960315 Release 0.5.0
  1010. 960315 Newest DOS port from Gustavo. New sgi-gcc target.
  1011. 960314 Add -lXext to osf target. Use "rb" for fopen() in main.c
  1012. 960310 Play a bit with the __asm__ constraints. Implement CHK.
  1013. 960307 Fix some stupid Makefile errors. Call parse_cmdline() if no init file
  1014.        is found.
  1015.        First round of NextStep patches; new file NeXTwin.m
  1016.        Stupid bug in custom.c: The #define is called NO_FAST_DISK, not
  1017.        NO_FAST_FLOPPY.
  1018.        Fix one of the problems the Deform demo had with the blitter: The
  1019.        line texture wasn't rotated to the right position in blitter_init().
  1020. 960306 Use some black GCC __asm__ magic to calculate flags more quickly
  1021.        (config INTEL_FLAG_OPT)
  1022.        HAM was broken by pfield_linetoscr changes. Fixed.
  1023.        LOW_BANDWIDTH sometimes got confused when the display window changed.
  1024. 960305 BCD instructions work well enough for Locomotive Basic on CPE.
  1025.        New function parse_cmdline_and_init_file() that reads ~/.uaerc or
  1026.        ./.uaerc and adds the options found in those files to those in argv[].
  1027.        Patch from Denis Sablic to make disk image filenames runtime 
  1028.        configurable. Extend it for the ROM filename.
  1029.        Remove some of the run-time configurable stuff from config.h.
  1030.        More X keysym fixes (I finally got a proper .Xmodmap ...)
  1031.        for SVGAlib: Delete key, and PgUp/PgDn as Amiga keys.
  1032.        The sound driver can now handle 22050 Hz and/or 8 bit samples. Both of
  1033.        these are the default with LINUX_SOUND_SLOW_MACHINE.
  1034.        Also use the SNDCTL_DSP_GETBLKSIZE ioctl and write the buffer when 
  1035.        there is enough data.
  1036.        Abuse keybuf.c to provide a fake joystick emulation with the numeric
  1037.        pad (enable with -J)
  1038. 960304 bebox.cpp from Christian.
  1039.        Rename pfield_linetoscr_full to pfield_linetoscr_full8.
  1040.        More x86 assembly: pfield_linetoscr_full16.
  1041. 960303 SunOS target from Dirk Vangestel. Put some not-so-superfluous includes
  1042.        back in. Added the DOS specific patches to filesys.c.
  1043.        Started x86 assembly optimizations. New file X86.S, includes an
  1044.        optimized version of pfield_linetoscr (for 8 bit screens only).
  1045.        Don't use SA_RESTART if it isn't defined.
  1046.        prepare_line() wasn't called often enough (again...), leading to memory
  1047.        corruption and "hit the reset button" bugs when using SVGAlib.
  1048. 960226 Get rid of bool, true and false in amiga.h and everywhere else.
  1049.        Copy yesterdays code to AF_SOUND code, too.
  1050.        Include first round of Christian Bauer's BeBox patches. Add AIX fix
  1051.        from Samuel Mackrill.
  1052.        Add #include <string.h> and #include <stdlib.h> in some more places.
  1053.        Modify gencpu.c and readcpu.c so that immediate types j and J (0..15
  1054.        and 1..8) can be merged. Replace HAVE_ONE_GIG... option with a new
  1055.        CPU_EMU_SIZE option that can be set to a value in the range 0..5,
  1056.        where 0 is minimum size and 5 is equivalent to HAVE_ONE_GIG...
  1057. 960225 Remove multiplications in sound code, use a big lookup table.
  1058. 960222 Go back to having only one memory bank table of type addrbank instead
  1059.        of several function pointer arrays. Eliminate the HAVE_BROKEN_SOFTWARE 
  1060.        define by extending the memory bank table to 65536 entries.
  1061.        Remove remaining DUALCPU code. Allow BTST src,imm instructions in
  1062.        table68k.
  1063. 960220 Back out filesys.c change from Stefan Reinauer: don't call V36 specific
  1064.        functions in expansion.library.
  1065.        Better fix for the filesys.c assign problems by Oliver Moehrke.
  1066.        Make new playfield code conditional on EXPERIMENTAL_SCREEN_UPDATE.
  1067.        Improve the 64bit variant of said code. Try to get alignment for
  1068.        apixels by putting it into a union with a long.
  1069.        Kill the child in gui_exit(). Make graphics_init() return a value and
  1070.        check it in main.c to see whether graphics were initialized. If not,
  1071.        call gui_exit() anyway.
  1072.        Use new 256 color allocation routine from svga.c in xwin.c, too.
  1073.        Make LOW_BANDWIDTH compile _and_ work (wow...).
  1074. 960219 Fix bug in memory.c: When loading 256K Kickstart, copy 256K, not 128K.
  1075. 960218 Finished the rest of the UI: reset, debug and quit buttons as well as
  1076.        drive LEDs. New target linux-gui; all others use dummy file nogui.c
  1077.        for now.
  1078. 960217 The GUI now supports inserting and ejecting diskfiles and displays
  1079.        their names. Two pipes are used now, one for reading and one for
  1080.        writing. Properly wait for the process to start up.
  1081.        Use sigaction() instead of signal() in debug.c.
  1082.        More fixes for the new display routines: Need to do a final call to
  1083.        pfield_*word_*res with the data shifted right from the last fetched
  1084.        word.
  1085. 960216 Copper & sprite bugfixes from Marco Nelissen. Better X keyboard support
  1086.        from Bruno Coste.
  1087.        Move my_strdup() from filesys.c to options.h
  1088.        New files xui.c, uae-ui (shell script) and uae-ui.tk (wish script).
  1089.        These create a GUI for the X version of the emulator. So far, the
  1090.        power LED works.
  1091. 960215 Don't rely on SVGAlib headers defining any keycodes at all.
  1092.        Include Thorsten Frueauf's NetBSD patch. Apparently, the devname
  1093.        variable in hardfile.c caused a namespace collision, so rename it to
  1094.        uaedevname. Fastmem fixes, debugger help, and ConfigDev allocation in
  1095.        hardfile and filesys from Stefan Reinauer.
  1096.        xwin.c: Give the window a title.
  1097.        Half-implemented the DIVU.L, DIVS.L, MULU.L and MULS.L instructions.
  1098. 960213 AF sound system support from Marcus Sundberg. Win95 keyboard support
  1099.        for SVGAlib from Thierry Lescot. Added most of Gustavo Goedert's MS-DOS
  1100.        port.
  1101.        When using the old pfield_*word_*res functions, the gen_pfield_tables()
  1102.        function was undefined.
  1103.        Hmmm, /dev/brain must have been unmounted when I wrote the new pfield_*
  1104.        functions. Now they make sure they access the apixels array only with
  1105.        addresses that are multiples of 16 bytes.
  1106. 960212 Fix copy&paste bug in cia.c found by Marco Nelissen: Need to call
  1107.        RethinkICRB() instead of RethinkICRA() for CIA B timers.
  1108.        Added Stefan Reinauers autoconfig area/fastmem support. Added run-time
  1109.        options for use_slow_mem and use_fast_mem.
  1110.        Oops, the pfield_*word_*res() optimizations break completely on HPs and
  1111.        Sparcs. Now use this optimization only if we are using GCC 2.7.
  1112.        HPUX fixes in the Makefile. New target hpux-gcc.
  1113.        The code for clearing the areas above and below the DIW was trying to
  1114.        be a little too clever selecting the color. Just use the current 
  1115.        background color.
  1116.        Added channel attachment to the sound code. Untested.
  1117. 960211 Found some flag setting bugs in the rotate/shift instructions and in
  1118.        addx/subx (which I thought I had already fixed) by reimplementing 
  1119.        DUALCPU mode to work with Ed's e68k.
  1120.        Argh! The copper is completely disabled during DDF in Hires 4 bitplane
  1121.        mode - so copper positions 0x30 and 0x34 are about 640 pixels apart.
  1122.        The Kickstart uses FF39FFFE to wait for the end of line 256 instead of
  1123.        FFDFFFFE as in all the other modes. This is implemented now, but
  1124.        probably not 100% correct.
  1125.        Added check whether SVGAlib doesn't support our mode.
  1126.        If using GCC >= 2.7, define __attribute__((aligned(16))) as
  1127.        BIG_ALIGNMENT in config.h. Use it for the apixels array to prevent
  1128.        potential problems on the Alpha.
  1129.        Tried to make the color selection routine produce better results in 256
  1130.        color mode.
  1131. 960210 readdisk didn't work at all for large files - fixed.
  1132.        In pfield_doline(), clear the apixels array if playfield DMA is off.
  1133.        In SPRxCTL(), reset sprite mode when sprpos==sprctl==0
  1134.        Rewrite pfield_orword_hires() and friends to use lookup tables. No
  1135.        noticeable improvement on my machine, but might be different on other
  1136.        machines. Two versions of this code: one using 64bit longs on the Alpha.
  1137.        New targets linux-debug and linux-prof.
  1138.        Use 1MB slow mem.
  1139.        -funroll-loops is a little excessive. Remove it.
  1140.        Add support for linear addressing modes for SVGAlib version. Speedup
  1141.        is 20-30% on my old 486 VLB. Now, would someone please fix SVGAlib to
  1142.        support that for the S3-864 as well?
  1143.        Set SVGAlib keyboard mode to DONT_CATCH_CTRLC.
  1144.        Change custom.c, xwin.c and svga.c to keep track of the display window 
  1145.        and background color and to clear the areas above and below the display
  1146.        window if necessary to remove garbage images from previous frames.
  1147.        Set the LOF bit in the Kickstart replacement init routine. Also
  1148.        initialize CIAs to Kick 1.3-like values.
  1149. 960209 Some more -DHAVE_xxx_H options in the Makefile and filesys.c. DEC Alpha
  1150.        fixes for filesys.c from Ed and Marcus. HPUX fixes.
  1151.        New field in table68k for CPU type, parsed by readcpu and compared to
  1152.        CPU_LEVEL which is defined in config.h. New instructions MOVE2C, MOVEC2
  1153.        and CAS. Also a new field for priviledge level that is used by gencpu to
  1154.        generate tests for regs.s and Exception(8) calls if necessary.
  1155.        Move parsing of table68k into a new file build68k.c. Generate a file
  1156.        called cpudefs.c containing the information from table68k in 
  1157.        machine-readable form. Change readcpu.c to use the array found in 
  1158.        cpudefs.c.
  1159.        Don't generate the d8(An,Dn) addressing mode in-line. Generate a call to
  1160.        get_disp_ea(), which is an inline function in newcpu.h if UAE is
  1161.        configured for 68000 emulation; for 68020 emulation, it is defined in
  1162.        newcpu.c.
  1163.        Debugger could crash on illegals because there was no mnemonic defined
  1164.        in lookuptab[].
  1165.        Return zero for SERDATR.
  1166. 960207 It seems that the copper stops completely if an attempt to write to a
  1167.        specific register fails because of COPDANG. Apparently, the Kickstarts
  1168.        use this to stop the copper with a 0x00000000 longword. This leaves the
  1169.        question why they don't do 0xFFFFFFFE like everybody else.
  1170.        Enable 512K slow memory by default.
  1171.        Integrate Stefan Reinauers battclock patch that makes it work with
  1172.        newer Kickstarts.
  1173.        In cia.c, do the little index pulse hack even if dskdmaen==1, because
  1174.        DMA is only enabled when dskdmaen==2 (Helps the "Mad Decision" demo).
  1175.        Add solaris entry to Makefile (GCC, Openwin, -DHAVE_STATFS_H)
  1176.        Define HAVE_STRINGS_H for SGIs, change filesys.c accordingly.
  1177. 960206 Build a smaller table instead of cputbl.c. Use readcpu and the smaller
  1178.        table to build the cpufunctbl array at run-time.
  1179.        Nuked the other half of the old CPU emulator. Reimplemented debugger to
  1180.        use the information generated by readcpu.
  1181.        Define HAVE_STATFS_H for SGIs in the Makefile, and use that as a test
  1182.        in filesys.c instead of #ifndef __linux.
  1183.        Hack filesys.c, get_path() to support the assign command.
  1184.        Add -fstrength-reduce and -funroll-loops in Makefile to make people
  1185.        nervous.
  1186.        Rewrite Sam Devulder's LOW_BANDWIDTH patch and add it to xwin.c.
  1187. 960205 Forgot some PC-relative bit instructions in table68k.
  1188.        Nuked half of the old CPU emulator.
  1189.        Split gencpu.c into two parts, new one is called readcpu.c and just
  1190.        parses the table68k file. Link it to the main program.
  1191.  
  1192. 960205 Release 0.4
  1193. 960203 filesys.c, action_read(): Slightly more efficient code (translate Amiga
  1194.        address to real pointer).
  1195.        Moved some common code in the generate_* functions in gencpu.c to a
  1196.        separate function.
  1197. 960202 Added an experimental fast disk option. Currently turned off by
  1198.        default (it's not such a big win).
  1199.        Attached sprite fixes (overlapping att. sprites looked bad, Katakis).
  1200.        Add sleep(1) before resetting the console to text mode when using
  1201.        SVGAlib: this might fix some screen corruption problems.
  1202.        Add sprite/playfield priority checking to the most important case
  1203.        (single playfield, no HAM).
  1204.        In filesys.c, do_find(): open() returns -1 on error, not zero.
  1205.        Return ERROR_OBJECT_WRONG_TYPE if do_find() is called for a directory
  1206.        (fixes Champions of Krynn harddisk installation).
  1207. 960201 Don't abort if sound driver not present, just set produce_sound to 0.
  1208.        New files keybuf.c and keybuf.h to record keypresses in the right
  1209.        order and without losing any. In cia.c, force 15 scanlines between
  1210.        keypresses, just to be sure.
  1211.        unixfs.device _does_ work with Kick 1.3: just don't trust what Kick 1.3 
  1212.        sends in the startup packet. For now, disable more than one mount per 
  1213.        command line.
  1214.        Started integrating Ernesto's new Mac sources.
  1215.        Remove superfluous includes from some files.
  1216. 960131 Added Ed's unixfs.device (great stuff).
  1217.        Adding ULONGs to pointers is a bad idea on the Alpha if the ULONG value
  1218.        really is signed. Add some casts to LONG in (pc_p + src) expressions
  1219.        in genpu.c.
  1220.        If DMACON is written and copper DMA is enabled, do a COPJMP1 at once.
  1221.        Helps the "Interference" demo.
  1222. 960129 More SGI fixes from Ed. Bugfixes and transdisk improvements from Marcus 
  1223.        Sundberg.
  1224.        Remove EXTRA_DEFINES from Makefile. Breaks some systems.
  1225.        Move common sprite code from pfield_doline() and pfield_doline_slow()
  1226.        to new function pfield_sprite(). The same sprite may appear more than
  1227.        once on the same line, so don't shift out the bits of sprdata[] and
  1228.        sprdatb[] while displaying it (Turrican I).
  1229.        In xwin.c and svga.c, barf if LINUX_SVGALIB doesn't match the file 
  1230.        being compiled.
  1231.        Make all .o files depend on config.h in the Makefile.
  1232.        No need to exit if sound driver unavailable, but -S given.
  1233.        Small debugger fix: Missing space in output.
  1234.        Fix for the sprite logic: Specifically, use a state variable indicating
  1235.        whether the sprite has been restarted after a VSYNC. Fixes most
  1236.        Turrican problems.
  1237. 960124 Added Denis Sablic's patch for sound run-time option.
  1238.        Added Ed Hanway's patch for better Makefile, X mouse cursor blanking 
  1239.        and more SGI compilation fixes.
  1240. 960123 Include options.h everywhere.
  1241.        Handle 8 bit GrayScale visuals like PseudoColor.
  1242.        Remove C++ leftovers from joystick code.
  1243. 960122 When using the joystick driver, the button test must come after
  1244.        handle_events() in vsync_handler().
  1245. 960118 Removed all the remaining C++ comments. Changed all inline keywords to
  1246.        __inline__. Define __inline__ if not using gcc.
  1247.        Make proper prototypes for everything. Compile with maximum warnings +
  1248.        -ansi + -pedantic.
  1249.        Remove CIA_cycle(), obsolete.
  1250.        Reimplemented the STOP optimization in newcpu.c. Removed DualCPU
  1251.        support in CPU emulator.
  1252.        Real nasty bug in pfield_doline() fixed: sprxpos could be evaluated as
  1253.        negative, with not-so-amusing results. (Need to rewrite this in 
  1254.        Oberon to get array bounds checking :-)       
  1255. 960117 Heroic effort: Rewrote the thing in C. This might help fix some
  1256.        problems with users being unable to compile it.
  1257.        Fixed a problem in hsync_handler(): Only call flush_line() for lines
  1258.        in the display window, i.e. when we did a prepare_line() before.
  1259.        Better code for relative branches: Don't use setpc(getpc()+x) calls,
  1260.        increment regs.pc_p instead.
  1261. 960116 Reimplemented the function to load the Kickstart ROM. Use stdio instead
  1262.        of fstreams since this apparently does not work on the Mac. Detect 256K
  1263.        Kickstarts. Detect corrupt ROM images (calculate checksum).
  1264.        Added Ernesto Corvi's Mac port. Changed it around a bit, so it
  1265.        probably won't compile.
  1266. 960115 Reinstate config.h options for X screen depth, so that DrawPixel() can
  1267.        be inlined in custom.cc for speed. xlinebuffer is now incremented in
  1268.        each call to DrawPixel() (for both X and SVGAlib) to get rid of some
  1269.        address calculations.
  1270. 960114 Fixed X generic pixel drawing routine for SHM.
  1271.        Still trying to fix the harddisk emulation.
  1272.        uae.device no longer breaks the debugger (can step through uae.device
  1273.        functions now)
  1274.        Bugs affecting performance: SPCFLAG_STOP never got reset, and DSKLEN() 
  1275.        would set SPCFLAG_DISK even if DMA was being turned off.
  1276.        Made slow memory a run-time option.
  1277.        Defer interrupts by one CPU instruction to give programs a chance to
  1278.        read INTREQR ("Seeing is Believing" and "Substance" demos)
  1279.        Added ScrollLock hack for X, too.
  1280. 960113 SVGAlib version compiles again. Fixed SVGAlib mouse bug.
  1281.        Fixed SHM bug: Maximum scanline is 313, not 312.
  1282.        Sometimes, disk.cc missed a side change and would read the wrong data.
  1283.        Fixed. Apparently, this was the worst compatibility problem.
  1284.        Implemented trace mode.
  1285. 960112 Changed layout of class amigamemory a little so that gcc can generate
  1286.        better addressing modes.
  1287.        Finally wrote functions in gencpu to generate MOVEMs.
  1288. 960109 Integrated Ed Hanway's patches for better X support and run-time
  1289.        configuration of some options. 
  1290.        Got rid of the direct VGA memory access. (Need to do this differently).
  1291.        Changed the method of drawing lines: custom.cc now tells the graphics
  1292.        code the line number and whether it needs to be doubleed before drawing
  1293.        it.
  1294.        Added Andre Beck's MIT-SHM patch.
  1295.        Remove warnings for newcpu.cc.
  1296. 960108 Fixed exceptions in op_illg(): Need to decrement PC.
  1297. 960107 Added an "uae.device" resident module at 0xF00000. This emulates a hard
  1298.        disk (fixed size 8MB for now).
  1299. 960106 Moved some common code from pfield_doline() and pfield_doline_slow() to
  1300.        a separate function. This fixes a potential HAM bug (two static vars
  1301.        for the same value).
  1302.        Sound support for Linux. Works only with graphics off and the CPU
  1303.        slowed down.
  1304.        Better SVGAlib keyboard support.
  1305. 960105 Added AvailMem(), AllocMem(), AllocAbs() and FreeMem() dummies.
  1306.        The Hardwired demo times the multiplication instructions and prints
  1307.        "This demo don't like Axel" if they are too fast. Apparently, Axel has
  1308.        a 68040. Added a WANT_SLOW_MULTIPLY option to config.h.
  1309.        Fixed the fast blitter emulation (seems to work now).
  1310. 960104 Fixed all the ChangeLog entries from 95 that said 96 (oops??!)
  1311.        pfield_may_need_update() should check whether bitplane DMA is on.
  1312.        Added ersatz.cc and ersatz.h. The purpose of these files is to
  1313.        implement one or two Kickstart functions that are commonly called from
  1314.        bootblocks. This should help support some games and demos that only use
  1315.        the Kickstart as an initial track loader. So far, it's only good enough
  1316.        for one program.
  1317. 951223 More intelligent event handling in the CPU emulator. Slightly faster.
  1318. 951222 Optimize CPU emulation by inlining cctrue(). Also, the real PC no
  1319.        longer needs to be incremented each instruction. The real PC value
  1320.        now has to be fetched by m68k_getpc().
  1321.        Added direct screen access for SVGAlib, but it didn't help much. I'll
  1322.        probably remove it again.
  1323.        The gencpu executable is 2M smaller if it allocates memory
  1324.        dynamically.
  1325. 951216 custom_bput() enhanced a little. Now remembers the value that was 
  1326.        written in the other half of the register.
  1327.        Apparently, the USEx bits of BLTCON0 are ignored in line draw mode.
  1328.        (Silents-Demo)
  1329.  
  1330. 951212 Release 0.3
  1331. 951212 Included Alessandro's battclock patch.
  1332.        Fixed mouse autocalibration for wrong-aspect screens.
  1333. 951210 Joystick support for Linux.
  1334.        Better color matching for 256 color modes.
  1335.        Rewrote most of the memory management in plain C, mainly to avoid the
  1336.        various template bugs in some compilers, but also because gcc can't
  1337.        handle the regparm attribute for virtual functions yet.
  1338. 951209 Added Alessandro's patches for automatic mouse calibration.
  1339.        Tried to optimize the blitter loop a bit. Doesn't work.
  1340. 951205 Added Hannu's patches for diskfile write support.
  1341. 951201 More portability fixes, especially for weird compilers that workstation
  1342.        vendors ship.
  1343. 951125 More keys for X, some keyboard support for SVGAlib (slightly 
  1344.        dangerous); beginnings of US keyboard support.
  1345. 951124 256 color mode support for SVGAlib. FAST!
  1346. 951123 Tiny tweak to central loops in playfield code results in much better
  1347.        assembly. Apparently, GCC does not feel too good about optimizing 
  1348.        reference variables.
  1349. 951113 Bug fix in the events code (nextevent must not be changed while events
  1350.        are being processed).
  1351. 951112 The playfield can now be drawn with the right aspect (i.e., every line
  1352.        twice). Slower, but looks nicer and supports interlaced mode
  1353.        (flickerfree!). The first 29 lines (blanking interval) are omitted
  1354.        now to fit everything in 800x600.
  1355.        Oops, disk drive identification did not work. Fixed, all four drives
  1356.        appear now.
  1357.        Oops, CIA_reset() was there all the time but never got called.
  1358.        Optimized the planar->chunky conversion in pfield_doline() a little.
  1359.        This really is time critical.
  1360. 951111 If colors change on a line, we might still be able to use the full 
  1361.        line update, if the change occurred outside the DIW. Have to be a 
  1362.        little careful, though.
  1363.        Playfield code now uses real pointers again, but makes sure it can
  1364.        read enough bytes to complete the current line without segfaulting.
  1365.        Oops, my "better estimate" (see below) was a mistake. Restored the
  1366.        original 4 hw cycles per instruction relation. This slows down the
  1367.        emulator while booting (more screen refreshs), but speeds up many
  1368.        demos that otherwise spend most of their time waiting for a specific
  1369.        raster position.
  1370.        Playfield modulos must be added immediately when DDF stops. (WOC demo)
  1371.        Portability fixes in disk.cc (null pointers).
  1372.        Implemented average frame rate calculation ('c' in the debugger).
  1373.        Debugger fixes.
  1374.        Sprite fixes (height was wrong, wrong priorities in fast update)
  1375.        Added an AutoConfig expansion RAM device. The OS seems to recognize
  1376.        it, but breaks sometime later (seems to be the same bug that kills
  1377.        the emulator when there's RAM at 0xC00000).
  1378.        SVGAlib now has mouse support, too.
  1379.        HAM mode implemented.
  1380. 951110 Implemented fast complete line playfield update. Switches back if
  1381.        necessary. Fixed attached sprites bug.
  1382.        Copper wait no longer slows down the CPU emulation. (there were
  1383.        lots of new copper bugs because of this, but I hope I fixed all
  1384.        of them).
  1385.        Changed cia?t? from UWORD to ULONG, since there were overflows in
  1386.        the assertion (because of 65535+1 == 0).
  1387. 951108 The DIVS remainder could have the wrong sign.
  1388.        New HAVE_BROKEN_SOFTWARE define in config.h that makes the emulator
  1389.        mask out the high byte of all addresses.
  1390.        Wrote genblitter.cc and replaced the awful code in blitter_blit()
  1391.        and blitter_line() with calls to the generated function.
  1392. 951107 Implemented ?BCD. These don't really work yet.
  1393.  
  1394. 951106 Release 0.2
  1395. 951105 Fixed a bug in the new CIA timer code.
  1396.        Fixed flag settings for some cases of ADDX/SUBX
  1397. 951104 Changed the main loop a bit - call all the *cycle() functions only if
  1398.        it is really necessary. I hope everything still works - at least it is
  1399.        twice as fast now :-D
  1400.        Improved mouse emulation - avoid overflows, permit "wraparound".
  1401.        Added debugger 'g' command.
  1402.        Removed some useless casts from the CPU emulator.
  1403.        Added a configuration option to prevent checks for odd addresses. Only
  1404.        very bad programs need this check.
  1405. 951103 The sprite emulation sometimes did not work too well, especially with
  1406.        dual playfield mode. Hopefully fixed.
  1407. 951102 The 10 cycle counter is more like a 5 cycle counter in this
  1408.        implementation. (Fine, that makes floppy loading even faster :-)
  1409.        Implemented mouse movement. Totally out of sync with the X pointer,
  1410.        but at least something.
  1411.        Found out about the XAutoRepeatOff() function. Real useful.
  1412.        DualCPU mode works again.
  1413.        Corrected flag settings for CMPA.W.
  1414.        Fixed DIV instructions: Don't change dest in case of overflow.
  1415. 951031 The PC is now converted to a real pointer. This is safe (much safer
  1416.        than converting bitplane pointers, since the PC always has to be valid)
  1417.        and should speed things up a little.
  1418. 951029 Some primitive event handling: 2 mouse buttons and 1 joystick button
  1419.        are emulated, as well as parts of the keyboard (only german mapping).
  1420.        Fixes: Delay values and sprite widths are always LoRes. Playfield 2
  1421.        uses colors 9..15.
  1422.        Implemented a frame rate configuration option that can speed up the
  1423.        emulation quite a bit.
  1424. 951028 A-ha. The 68000 has one strange feature after all. MOVEM.W to Dn sign 
  1425.        extends the value to a longword.
  1426.        Katakis expects that accessing odd addresses causes exception 3, so 
  1427.        we have to emulate this. *Sigh*
  1428.        Do at least something with the index pulse bit. It's more or less a 
  1429.        toggle now.
  1430.        Implemented sprites & dual playfields, both with small glitches.
  1431. 951027 When LOF is set, the frame is one line longer.
  1432. 951026 Implemented a preliminary diskfile type for special formats. Turrican
  1433.        boots up correctly (crashes if I want to play a game, though).
  1434.        Implemented EHB and added a few missing masking operations in the color
  1435.        handling.
  1436.        Fixed the absw addressing mode - need to sign extend here as well.
  1437. 951025 Fixed another extremely stupid bug, this time in the playfield code.
  1438.        Each pixel was calculated four times...
  1439.        Increased the size of the apixels array - this was being overrun.
  1440. 951024 Fixed an extremely stupid bug in flag settings for byte and word
  1441.        operations.
  1442.        The "sectors until gap" field must be in the range 1..11 instead of
  1443.        0..10, or very bad things will happen if it is used to calculate a
  1444.        blit size.
  1445. 951021 Don't use real pointers to fetch bitplane data - too many segfaults.
  1446.        Delay the copper after executing an instruction, or wait sequences like
  1447.        FFDF FFFE 0200 FFFE won't work.
  1448.        Some programs expect that the CPU is completely turned off if the
  1449.        blitter nasty bit is set. So be it.
  1450.        The RSI Megademo chokes when disk DMA fetches two syncs. Leave one out.
  1451.        The LOF bit wasn't set correctly.
  1452. 951020 Blitter fixes: Load fill carry from FCI each line; keep the masked
  1453.        value of bltadat in bltolda
  1454.        Give the CPU twice as many "cycles" - this still is not even remotely
  1455.        correct, but a better estimate.
  1456. 951017 Added SVGAlib support. Unfortunately, my graphics card isn't fully
  1457.        supported by the current SVGAlib version.
  1458. 951015 More small optimizations to memory.h and custom.cc.
  1459.        Added code for 256 color screens. The type of screen has to be
  1460.        selected at compile time.
  1461. 951014 Modified the memory management to be (hopefully) a little more
  1462.        efficient.
  1463.        Changed gencpu.cc to generate functions and a big function pointer
  1464.        array instead of the old case labels. The generated C++ files now
  1465.        compile a lot faster, and the code should be better as well.
  1466. 951013 Implemented pseudo POTGOR to keep the RMB from being detected as
  1467.        pressed all the time.
  1468.        GenerateDecTab() generated TRAP incorrectly.
  1469.        Made some more instructions (MOVE.B A0,D0 etc) illegal in gencpu.cc.
  1470.        Fixed X colors. Fixed data fetching for HiRes screens.
  1471. 951011 EXT.WL instructions set the flags.
  1472.        Implemented second CPU emulator, plus "DualCPU" option. The new CPU
  1473.        emulator is generated automatically from a file called table68k by
  1474.        a program called gencpu.
  1475. 951002 Removed version information from the file headers.
  1476.        Removed some sillinesses in custom.cc. 
  1477.        DSKLEN bug fixed (mask out 0xC000).
  1478.        Playfield code rewritten. Now supports horizontal scrolling. Implemented
  1479.        some primitive color support.
  1480. 950927 Fixed predecrement/postincrement addressing with byte size for the
  1481.        stack pointer.
  1482. 950926 Fixes to the disk code: Terminate disk DMA, flip disk side, read more
  1483.        than just two sectors during disk DMA, fix checksum calculation.
  1484.        Fixed copper comparison bugs.
  1485.        
  1486. 950901 Release 0.1
  1487. 950826 bugfix in GenerateDecTab(): LEA.W instructions were generated.
  1488. 950312 New file disk.cc, for (guess what) disk support. Doesn't work yet.
  1489. 950311 Multiplication instructions were generating 16 bit results.
  1490.        Sign extension was wrong in some places.
  1491.        Removed bugs in the blitter (one word width: ALWM & AFWM and line mode)
  1492.        The Kickstart logo looks perfect now.
  1493.        Playfield routine should check BPLCON0 instead of BLTCON0
  1494. 950309 ASR D8,D0 is not a valid instruction.
  1495.        Bitplane pointers were not incremented.
  1496.        Copper comparison didn't work. COP2LC and bitplane pointers were written
  1497.        incorrectly. Fixed.
  1498.        Something that bears a striking resemblance to the familiar Kickstart
  1499.        logo now appears in my X window!
  1500. 950306 ROR used to set the X flag. Bug fixes in GenerateDecTab.
  1501.        More bug fixes in several 68000 instructions.
  1502.        Improved blitter. ?????? KS1.3 doesn't seem to set BLTDMOD on a 
  1503.        line draw. What is this??
  1504.        Fixed stupid bugs in playfield code.
  1505. 950305 fixed bugs in opcode generation and interrupt handling. Implemented 
  1506.        STOP. Fixed flag settings: Result wasn't masked. Ooops!!
  1507.        ADDQ #imm,An doesn't set flags.
  1508.        One-shot timer mode didn't work.
  1509.        Implemented blitter, doesn't work.
  1510.        Some primitive and slow playfield support, only to make the things that
  1511.        hopefully will soon appear visible.
  1512. 950304 CIA timers ought to work OK. Copper is emulated.
  1513.        Emulator loops infinitely when trying to initialize the console.device
  1514. 950303 experiments with X, figured out how to open a window and draw pixels.
  1515.        No graphics emulation yet, though.
  1516. 950301 Nearly all instructions work.
  1517.        Fixed supervisor mode stack.
  1518.        The memory manager now handles CIA chips.
  1519. 950228 Bug fixes in 68000 code, exceptions and more instructions implemented
  1520.        Memory management extended to handle custom chips as well.
  1521.        Debugger improved.
  1522.        Kickstart passes memory & CPU type test, builds up some system
  1523.        structures.
  1524. 950227 MC68000 & little debugger for tracing. It can execute the first couple
  1525.        of KS1.3 instructions, but doesn't get past the memory test.
  1526. 950225 Work begun
  1527.